package com.itxx.threadpool;

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

public class Demo {
    public static void main(String[] args) {
        //构建自定义线程池
        /*
        自定义线程池参数
        1.corePoolSize     核心线程数

        2.maximumPoolSize    最大线程数

        3.keepAlivetime       空闲时间最大存活时间

        4.unit                 时间单位

        5.workQueue                任务队列

        6.threadFactory      创建线程

        7.handler           任务的拒绝策略
        */
        //核心线程数量
        ThreadPoolExecutor t = new ThreadPoolExecutor(2,
                //最大线程数
                5,
                //最大线程等待时间
                2,
                //最大线程等待时间单位
                TimeUnit.SECONDS,
                //任务队列   排队的线程数
                new ArrayBlockingQueue<>(10),
                //线程池对象   默认创建方式
                Executors.defaultThreadFactory(),
                //默认拒绝策略  new ThreadPoolExecutor.AbortPolicy()  终止策略
                new ThreadPoolExecutor.AbortPolicy());
        t.submit(new MyThread());
        t.submit(new MyThread());
        t.submit(new MyThread());
        t.submit(new MyThread());
        t.shutdown();


    }
}

class MyThread implements Runnable {

    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName() + "在执行");
    }
}
